#ifndef __IIC_MONI_H
#define __IIC_MONI_H
#include "stm32f4xx.h"
#include "nvicconfig.h"
#define IIC_BUS1 1
#define IIC_BUS2 2
#define IIC_BUS3 3
#define IIC_BUS4 4
/*********************************************************************************
IIC底层操作不传递参数，以防止频繁调用时的时间浪费
*********************************************************************************/
void IIC_Init(void);       	//初始化所有IIC			 
void IIC1_Start(void);			//IIC1 发送开始
void IIC1_Stop(void);	  	  //IIC1 停止信号
void IIC1_Ack(void);				//IIC1 发送ACK信号
void IIC1_NAck(void);				//IIC1 不发送ACK信号
uint8_t IIC1_WaitAck(void); //IIC1  等待ACK信号

void IIC2_Start(void);			//IIC2 发送开始
void IIC2_Stop(void);	  	  //IIC2 停止信号
void IIC2_Ack(void);				//IIC2 发送ACK信号
void IIC2_NAck(void);				//IIC2 不发送ACK信号
uint8_t IIC2_WaitAck(void); //IIC2  等待ACK信号

void IIC3_Start(void);			//IIC3 发送开始
void IIC3_Stop(void);	  	  //IIC3 停止信号
void IIC3_Ack(void);				//IIC3 发送ACK信号
void IIC3_NAck(void);				//IIC3 不发送ACK信号
uint8_t IIC3_WaitAck(void); //IIC3  等待ACK信号

void IIC4_Start(void);			//IIC4 发送开始
void IIC4_Stop(void);	  	  //IIC4 停止信号
void IIC4_Ack(void);				//IIC4 发送ACK信号
void IIC4_NAck(void);				//IIC4 不发送ACK信号
uint8_t IIC4_WaitAck(void); //IIC4  等待ACK信号
/*********************************************************************************
这一层的操作将总线作为变量
*********************************************************************************/
void IIC_SendByte(uint8_t IIC_BUS,uint8_t data);  //IIC发送一个字节
uint8_t IIC_ReadByte(uint8_t IIC_BUS,uint8_t ack);//IIC读取一个字节
uint8_t IIC_ReadByteFromSlave(uint8_t IIC_BUS,uint8_t I2C_Addr,uint8_t reg,uint8_t *buf);
uint8_t IIC_ReadMultByteFromSlave(uint8_t IIC_BUS,uint8_t dev, uint8_t reg, uint8_t length, uint8_t *data);
uint8_t IIC_WriteByteToSlave(uint8_t IIC_BUS,uint8_t I2C_Addr,uint8_t reg,uint8_t buf);
uint8_t IIC_WriteMultByteToSlave(uint8_t IIC_BUS,uint8_t dev, uint8_t reg, uint8_t length, uint8_t* data);
uint8_t IIC_WriteAndRead(uint8_t IIC_BUS,uint8_t addr,uint8_t *tdata, uint8_t tlen, uint8_t *rdata, uint8_t rlen);
#endif





